<?php
/**
 * Récupère et analyse les statistiques d'invention obtenu dans la bdd de l'ICU
 * @author  Joseph Lemoine - lemoine.joseph@gmail.com
 * @version 1
 */
class IcuInvStats extends Dao {
    
    /**
     * Nom de la base de donnée liée
     * @author  Joseph Lemoine - lemoine.joseph@gmail.com
     * @var     string
     */
    protected $_bdd = "ICU";

    /**
     * Nom de la table
     * @author  Joseph Lemoine - lemoine.joseph@gmail.com
     * @var     string
     */
    protected $_table = "invstats";

    /**
     * Définie l'accès en lecture seule ou non de la table
     * @author  Joseph Lemoine - lemoine.joseph@gmail.com
     * @var	bool
     */
    protected $_readOnly = FALSE;

    /**
     * Surcharge du constructeur parent pré-paramétré
     * @author	Joseph Lemoine - lemoine.joseph@gmail.com
     * @return	$this
     */
    public function __construct($id){
	parent::__construct($this->_base, $this->_table, $this->_readOnly);
	/* On récupère les statistiques correspondantes en forçant le reload */
	$this->load($id, "typeID", "typeID", true);
    }

    /**
     * Méthode de récuparation des valeurs d'une ligne
     * Sauvegarde de l'adresse de la ligne dans une variable pour
     * la passe d'exportation lors de la destruction de la class
     * Les données récupérés sont stockés afin de ne pas refaire une requète si
     * le même identifiant est demandé plus tard dans le code (sauf rechargement
     * forcé)
     * @author: Joseph Lemoine - lemoine.joseph@gmail.com
     * @Param	int	    $id		    Identifiant de la ligne à récupérer
     * @param	string	    $column	    Nom de la colonne où cherche l'ID
     * @param	string	    $column	    Nom de la colonne où effectuer un tri
     * @param	bool	    $forceReload    Force le rechargement des données
     * @return	bool
     * @access	public
     */
    public function load($id = null, $column = null, $order = null, $forceReload = false) {
	parent::load($id, $column, $order, $forceReload);
	
	/* Ajout de valeur non null */
	if(empty($this->nbSuccess))
	    $this->nbSuccess = 0;

	/* Ajout de valeur non null */
	if(empty($this->nbFails))
	    $this->nbFails = 0;
    }

    /**
     * renvoit un float avec la valeur de réussite en %
     * @author	Joseph Lemoine - lemoine.joseph@gmail.com
     * @param	VOID
     * @return	float		Pourcentage de réussite en pratique
     * @access	public
     */
    public function successRatio() {
	if($this->TrySum() > 0)
	    return $this->nbSuccess / $this->TrySum();
	else
	    return 0;
    }



    /**
     * renvoit un int avec le cumul de tentative (réussit ou non)
     * @author	Joseph Lemoine - lemoine.joseph@gmail.com
     * @param	VOID
     * @return	int		Nombre total de tentative
     * @access	public
     */
    public function TrySum() {
	return $this->nbSuccess + $this->nbFails;
    }
}
?>
